package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 获取一个目录中满足指定条件的所有子项
 * File[] listFiles(FileFilter filter)
 * 将当前file对象表示的目录中所有符合给定过滤器要求的子项返回。
 * 该方法会将该目录中所有的子项都经过一次给定的过滤器，然后仅保留并返回符合要求的子项
 */
public class ListFileDemo2 {
    public static void main(String[] args) {
        //获取当前目录中的所有名字中含有字母”e“的子项
        File dir = new File(".");
        if(dir.isDirectory()){
           // MyFiler filter = new MyFiler();
            FileFilter filter = new FileFilter(){//匿名内部类
                public boolean accept(File file) {//有多少子项就调几遍
                    String name = file.getName();
                    return name.contains("e");
                }
            };
            //重载的listFiles方法会将dir中每个子项都经过一次给定的过滤器的accept方法，
            // 并最终返回所有返回值为true的子项
            File[] subs = dir.listFiles(filter);
            System.out.println("子项个数："+subs.length);
            for(int i=0;i<subs.length;i++) {
                System.out.println(subs[i].getName());
            }
        }
    }

}
/*class MyFiler implements FileFilter {
    @Override
    public boolean accept(File file) {
        String name = file.getName();
        int index = name.indexOf("e");
        return index>=0;
        //return file.getName().contains("e");java自带检测是否含有某个字符的方法;
    }
}

 */